﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>#UseHook</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/commands.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" type="text/css" media="print">
</head>
<body>

<h1>#UseHook</h1>

<p>强制使用钩子来实现部分或全部键盘<a href="../Hotkeys.htm">热键</a>。</p>

<p class="CommandSyntax">#UseHook [On|Off]</p>
<h3>参数 </h3>
<table border="1" width="100%" cellspacing="0" cellpadding="3" bordercolor="#C0C0C0">
  <tr> 
    <td width="15%">On|Off</td>
    <td width="85%"><p>#UseHook 后不带下列单词的话就等同于 <em>#UseHook On</em>。</p>
      <p>On: 将用<a href="_InstallKeybdHook.htm">键盘钩子</a>来实现此处和下个 <em>#UseHook OFF</em>  (如果有的话)之间所有的键盘热键。</p>
    <p>Off: 将用默认的方法(如果可用 RegisterHotkey() 的话；否则会用键盘钩子)实现热键。</p></td>
  </tr>
</table>

<h3>注意</h3>
<p>通常只要可能，都会用 windows API 函数 RegisterHotkey() 来实现键盘热键。不过在某些条件下，如果用<a href="_InstallKeybdHook.htm">键盘钩子</a>来代替的话，热键的响应性可能会更好。</p>
<p>将此指令调为 ON 就相当于在每个受影响热键的定义中使用 <a href="../Hotkeys.htm#prefixdollar">$ 前缀</a>。Windows 95/98/Me 例外，它们忽略 #UseHook  (虽然 <a href="../Hotkeys.htm#prefixdollar">$ 前缀</a>能起有限的作用)。</p>
<p> 和所有在脚本启动时仅执行一次的 # 指令一样，<em>#UseHook</em> 在脚本中不应该像命令那样被放置(也就是说，没必要将它包含在子程序中)。而是将它放在你想要影响的首个热键标签前。</p>
<p>使用<a href="_InstallKeybdHook.htm">键盘钩子</a>的热键不能被 <a href="Send.htm">Send 命令</a>触发。相似地，鼠标热键也不能被比如 <a href="Click.htm">Click</a> 命令触发，因为所有的鼠标热键都使用<a href="_InstallMouseHook.htm">鼠标钩子</a>。要绕弯解决这种情况，可用 <a href="Gosub.htm">Gosub</a> 直接跳转到热键的子程序。例如：Gosub #LButton</p>
<p>如果脚本中没有出现此指令，那么将表现得像设成了 OFF。</p>
<h3>相关命令</h3>
<p><a href="_InstallKeybdHook.htm">#InstallKeybdHook</a>, <a href="_InstallMouseHook.htm">#InstallMouseHook</a>, <a href="ListHotkeys.htm">ListHotkeys</a> </p>
<h3>示例</h3>
<pre class="NoIndent">#UseHook  <em>;在此点后强制给热键使用钩子。</em>
#x::MsgBox, 此热键将用钩子实现。
#y::MsgBox, 这个也一样。
#UseHook off
#z::MsgBox, 但这个没用。</pre>

</body>
</html>
